// src/services/ApiService.js
import axios from 'axios';

class ApiService {
  constructor() {
    // 创建 axios 实例
    this.axiosInstance = axios.create({
      baseURL: 'http://localhost:48080/app-api', // 替换为你的 API 基础 URL
      timeout: 150000, // 请求超时时间，单位为毫秒
    });

    // 添加请求拦截器
    this.axiosInstance.interceptors.request.use(
        (config) => {
          // 这里可以添加授权 token 或其他请求头
      /*    const token = localStorage.getItem('token'); // 假设 token 存储在 localStorage
          if (token) {
            config.headers['Authorization'] = `Bearer ${token}`;
          }*/
          return config; // 继续请求
        },
        (error) => {
          // 请求错误处理
          console.error('请求错误:', error);
          return Promise.reject(error);
        }
    );

    // 添加响应拦截器
    this.axiosInstance.interceptors.response.use(
        (response) => {
          // 正常响应处理
          return response.data; // 直接返回响应的数据
        },
        (error) => {
          // 在这里处理响应错误, 可以返回更友好的错误信息
          this.handleError(error);
          return Promise.reject(error);
        }
    );
  }

  // 处理请求错误
  handleError(error) {
    if (error.response) {
      // 请求已发出，服务器以状态码响应
      console.error('错误数据:', error.response.data);
      console.error('错误状态:', error.response.status);
      console.error('错误头:', error.response.headers);
    } else if (error.request) {
      // 请求已发出，但没有收到响应
      console.error('请求无响应:', error.request);
    } else {
      // 其他错误
      console.error('错误:', error.message);
    }
  }

  // GET 请求
  get(url, params = {}) {
    return this.axiosInstance.get(url, params );
  }

  // POST 请求
  post(url, data = {}) {
    return this.axiosInstance.post(url, data);
  }

  // PUT 请求
  put(url, data = {}) {
    return this.axiosInstance.put(url, data);
  }

  // DELETE 请求
  delete(url) {
    return this.axiosInstance.delete(url);
  }
}

// 导出 ApiService 实例
export default new ApiService();
